package struts2.sample04.chinchirorin;

/**
 * チンチロリンの役。
 */
public enum Yaku {
	HIFUMI(0, "ヒフミ"),
	SHIGORO(0, "シゴロ"),
	PINZORO(1, "ピンゾロ"),
	ARASHI_2(2, "２のアラシ"),
	ARASHI_3(3, "３のアラシ"),
	ARASHI_4(4, "４のアラシ"),
	ARASHI_5(5, "５のアラシ"),
	ARASHI_6(6, "６のアラシ"),
	DEME_1(1, "１の目"),
	DEME_2(2, "２の目"),
	DEME_3(3, "３の目"),
	DEME_4(4, "４の目"),
	DEME_5(5, "５の目"),
	DEME_6(6, "６の目"),
	MENASHI(0, "目なし");

	
	private int number;
	private String name;


	/**
	 * コンストラクタ。
	 * @param number 数字
	 * @param name 名前
	 */
	private Yaku(int number, String name){
		this.number = number;
		this.name = name;
	}



	/**
	 * アラシか出目の場合に数字を取得する。
	 */
	public int getNumber(){
		if(number == 0)
			throw new IllegalStateException("数字なんかねぇよ");
		
		return number;
	}



	/**
	 * 文字列に変換（名前を返す）。
	 */
	public String toString(){
		return name;
	}



	/**
	 * 勝ち決定の場合にtrueを返す。
	 */
	public boolean isKachi(){
		return
			this == SHIGORO ||
			this == PINZORO ||
			this == ARASHI_2 ||
			this == ARASHI_3 ||
			this == ARASHI_4 ||
			this == ARASHI_5 ||
			this == ARASHI_6 ||
			this == DEME_6;
	}



	/**
	 * 負け決定の場合にtrueを返す。
	 */
	public boolean isMake(){
		return
			this == HIFUMI ||
			this == MENASHI ||
			this == DEME_1;
	}
	
	
}
